package com.hello.single;

/**
 * 单例模式-懒汉模式
 * 1、定义一个静态变量实例
 * 2、定义一个静态函数创建并返回实例
 * 3、私有化构造函数
 * 问题：
 * 1、反射破坏
 * 2、反序列化破坏
 */
public class InnerLanhanSingle3 {

    private static InnerLanhanSingle3 single;

    private InnerLanhanSingle3(){};

    public static InnerLanhanSingle3 getInstance() {
        return InnerClass.single;
    }

    /**
     * 内部类的虚拟机机制，只有当访问类的时候，才会加载，
     * 因此， 既保证了懒加载(节省内存)，又保证了线程安全。
     */
    private static class InnerClass{
        private static final InnerLanhanSingle3 single = new InnerLanhanSingle3();
    }

}
